<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="created" content="2018-10-23T06:18:10.521000000">
    <meta name="changed" content="2018-10-23T06:18:42.262000000">
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <meta http-equiv="Content-Language" content="pt">
    <title>
      Testar múltiplos arquivos
    </title>
    <link rel="stylesheet" type="text/css" href="..\..\style.css">
  </head>
  <body>
    <div class="maindiv">
      <h1>
        Testar múltiplos arquivos
      </h1>
      <p>
        Em um exemplo de sala de aula, você poderá ter vários arquivos que deseje testar a equivalência, e você pode não querer ler as saídas para cada uma das soluções do aluno.
      </p>
      <h2>
        Construir comparações de circuito
      </h2>
      <p>
        Uma abordagem é a construir um circuito para testes que fará a comparação direta. Criaremos um circuito adicional no arquivo para testes que conterá nosso circuito com a solução. Nosso circuito de teste global, incluirá o subcircuito <b><tt>adder-master.circ</tt></b> e o subcircuio com solução acoplados em um mesmo circuito. Conexões serão feitas para que haja apenas uma saída, que será 1, quando os dois subcircuitos concordarem.
      </p>
      <blockquote>
        <img src="../../../../img-guide/verify-adder-test2.png" alt="#########">
      </blockquote>
      <p>
        Agora podemos simplesmente executar o Logisim substituindo cada arquivo de consulta. Para qualquer solução correta, haverá uma única saída igual a <q>1</q> .
      </p>
      <h2>
        Usar redirecionamento e "shell scripts"
      </h2>
      <p>
        Se você estiver completamente confortável com a linha de comando, você poderá construir seu próprio <i>shell script</i> para fazer isso. Aqui, vamos usar o redirecionamento (o operador&gt;) para salvar a saída de cada circuito em um arquivo. Por exemplo, poderíamos emitir os seguintes comandos para coletar a saída do circuito principal e do circuito de consulta.
      </p>
      <blockquote>
        <div class=forcode>
          <tt>java -jar logisim-evolution.jar test.circ -tty table &gt; out-master.txt</tt>
        </div>
        <div class=forcode>
          <tt>java -jar logisim-evolution.jar test.circ -tty&nbsp;table -sub master.circ query.circ &gt; out-query.txt</tt>
        </div>
      </blockquote>
      <p>
        Agora teremos criado dois arquivos diferentes. Poderemos então comparar os dois arquivos de saída usando um programa construído para esse fim. Em Linux ou MacOS X, você poderá usar o <b>cmp</b> ou <b>diff</b> utilitários de linha de comando. No Windows, você poderá usar o WinMerge.
      </p>
      <p>
        Para processar vários arquivos de consulta, você poderá construir um programa simples como um <i>script shell</i> para percorrer cada um e comparar o resultado. Aqui está como eu faria isso no Linux com <b>bash</b>
      </p>
	  <blockquote>
        <tt>RUN_TEST="java -jar logisim-evolution.jar test.circ -tty table"<br>
        ${RUN_TEST} &gt; out-master.txt<br>
        for QUERY_FILE in query*.circ<br>
        do<br>
        &nbsp;&nbsp;if&nbsp;${RUN_TEST}&nbsp;-sub&nbsp;master.circ&nbsp;${QUERY_FILE}&nbsp;|&nbsp;cmp&nbsp;-s&nbsp;out-master.txt<br>
        &nbsp;&nbsp;then<br>
        &nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"${QUERY_FILE}&nbsp;OK"<br>
        &nbsp;&nbsp;else<br>
        &nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"${QUERY_FILE}&nbsp;different"<br>
        &nbsp;&nbsp;fi<br>
        done</tt>
      </blockquote>
      <p>
        <b>Próximo:</b> <a href="../index.html">Guia do usuário</a>.
      </p>
    </div>
  </body>
</html>
